TTYPE TABLE
このページを編集する際は，編集に関する方針に従ってください． 概要 *gcc-4.1.0/libcpp/include/cpplib.hにて定義 *オペレータとトークンの表 実装 48 /* The first three groups, apart from '=', can appear in preprocessor 49 expressions (+= and -= are used to indicate unary + and - resp.). 50 This allows a lookup table to be implemented in _cpp_parse_expr. 51 52 The first group, to CPP_LAST_EQ, can be immediately followed by an 53 '='. The lexer needs operators ending in '=', like ">>=", to be in 54 the same order as their counterparts without the '=', like ">>". */ 55 56 #define TTYPE_TABLE \ *オペレータ 57 OP(EQ, "=") \ 58 OP(NOT, "!") \ 59 OP(GREATER, ">") /* compare */ \ 60 OP(LESS, "<") \ 61 OP(PLUS, "+") /* math */ \ 62 OP(MINUS, "-") \ 63 OP(MULT, "*") \ 64 OP(DIV, "/") \ 65 OP(MOD, "%") \ 66 OP(AND, "&") /* bit ops */ \ 67 OP(OR, "|") \ 68 OP(XOR, "^") \ 69 OP(RSHIFT, ">>") \ 70 OP(LSHIFT, "<<") \ 71 OP(MIN, "?") \ 73 \ 74 OP(COMPL, "~") \ 75 OP(AND_AND, "&&") /* logical */ \ 76 OP(OR_OR, "||") \ 77 OP(QUERY, "?") \ 78 OP(COLON, ":") \ 79 OP(COMMA, ",") /* grouping */ \ 80 OP(OPEN_PAREN, "(") \ 81 OP(CLOSE_PAREN, ")") \ 82 TK(EOF, NONE) \ 83 OP(EQ_EQ, " ") /* compare */ \ 84 OP(NOT_EQ, "!=") \ 85 OP(GREATER_EQ, ">=") \ 86 OP(LESS_EQ, "<=") \ 87 \ 88 /* These two are unary + / - in preprocessor expressions. */ \ 89 OP(PLUS_EQ, "+=") /* math */ \ 90 OP(MINUS_EQ, "-=") \ 91 \ 92 OP(MULT_EQ, "*=") \ 93 OP(DIV_EQ, "/=") \ 94 OP(MOD_EQ, "%=") \ 95 OP(AND_EQ, "&=") /* bit ops */ \ 96 OP(OR_EQ, "|=") \ 97 OP(XOR_EQ, "^=") \ 98 OP(RSHIFT_EQ, ">>=") \ 99 OP(LSHIFT_EQ, "<<=") \ 100 OP(MIN_EQ, "?=") \ 102 /* Digraphs together, beginning with CPP_FIRST_DIGRAPH. */ \ 103 OP(HASH, "#") /* digraphs */ \ 104 OP(PASTE, "##") \ 105 OP(OPEN_SQUARE, "\ 106 OP(CLOSE_SQUARE, "") \ 107 OP(OPEN_BRACE, "{") \ 108 OP(CLOSE_BRACE, "}") \ 109 /* The remainder of the punctuation. Order is not significant. */ \ 110 OP(SEMICOLON, ";") /* structure */ \ 111 OP(ELLIPSIS, "...") \ 112 OP(PLUS_PLUS, "++") /* increment */ \ 113 OP(MINUS_MINUS, "--") \ 114 OP(DEREF, "->") /* accessors */ \ 115 OP(DOT, ".") \ 116 OP(SCOPE, "::") \ 117 OP(DEREF_STAR, "->*") \ 118 OP(DOT_STAR, ".*") \ 119 OP(ATSIGN, "@") /* used in Objective-C */ \ 120 \ *トークン 121 TK(NAME, IDENT) /* word */ \ 122 TK(AT_NAME, IDENT) /* @word - Objective-C */ \ 123 TK(NUMBER, LITERAL) /* 34_be+ta */ \ 124 \ 125 TK(CHAR, LITERAL) /* 'char' */ \ 126 TK(WCHAR, LITERAL) /* L'char' */ \ 127 TK(OTHER, LITERAL) /* stray punctuation */ \ 128 \ 129 TK(STRING, LITERAL) /* "string" */ \ 130 TK(WSTRING, LITERAL) /* L"string" */ \ 131 TK(OBJC_STRING, LITERAL) /* @"string" - Objective-C */ \ 132 TK(HEADER_NAME, LITERAL) /* in #include */ \ 133 \ 134 TK(COMMENT, LITERAL) /* Only if output comments. */ \ 135 /* SPELL_LITERAL happens to DTRT. */ \ 136 TK(MACRO_ARG, NONE) /* Macro argument. */ \ 137 TK(PRAGMA, NONE) /* Only if deferring pragmas */ \ 138 TK(PADDING, NONE) /* Whitespace for -E. */